package com.dy.design_pattern_study.observer_mode.dome1_coupling;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-04-03
 * @Content 耦合版本的观察者模式
 * 这里耦合就耦合在 前台与职员之间，他们无法独立运行
 * 因为后面的修改代码都需要在基础的类上进行重新修改，因此这些都是耦合性极强
 *
 * 因此我们需要进行解耦的操作
 * 首先开放-封闭原则，修改原有代码就说明设计不够好。
 * 其次是依赖倒转原则，我们应该让程序都依赖抽象，而不是相互依赖
 */
@Data
public class Secretary {
    //同事列表
    private List<StockObserver> observers = new ArrayList<StockObserver>();

    //前台状态
    private String action;

    //增加
    public void attach(StockObserver observer) {
        observers.add(observer);
    }

    //通知 同事
    public void notifyObserver() {
        for (StockObserver observer : observers) {
            //接收到通知之后改变之前摸鱼的状态
            observer.update();
        }
    }

}
